EVI is an advanced vegetation index designed to improve sensitivity over high biomass areas
and reduce atmospheric and soil background effects by using the blue band in addition to red and NIR.
1. Scientific Definition
The Enhanced Vegetation Index (EVI) is a spectral vegetation index
that enhances the signal in high biomass regions and improves the separation between
vegetation and soil/background. It uses the Near-InfraRed (NIR), Red, and Blue bands
with correction coefficients to reduce atmospheric and background effects.
Formula
A common formulation of EVI is:
EVI = G × (NIR − Red) / (NIR + C1 × Red − C2 × Blue + L)
Dimensionless (–1 to +1)
Dense and healthy vegetation (croplands, forests with high biomass)
Key Applications
Monitoring dense and high-biomass vegetation
Detecting vegetation changes in tropical forests and humid regions
Complementing NDVI where saturation occurs in dense canopies
Crop monitoring, yield estimation, and vegetation phenology
2. Data & Bands for EVI
Common Sensors & Bands
Sentinel-2 (ESA) – 10 m
Blue: B2 (~490 nm)
Red: B4 (~665 nm)
NIR: B8 (~842 nm)
Landsat 8/9 OLI – 30 m
Blue: B2
Red: B4
NIR: B5
Good Practice
Use atmospherically corrected surface reflectance products.
Filter out cloudy scenes using appropriate cloud masks or cloud percentage.
Clip the final EVI raster to your Area of Interest (AOI) before exporting.
Use consistent dates when comparing EVI time series or multi-year analyses.
Palette Suggestion
A sample EVI color palette similar to NDVI:
[ "#440154", "#3b528b", "#21908c", "#5dc963", "#fde725" ]
3. Google Earth Engine Code – EVI for Any AOI
Steps: open code.earthengine.google.com → New Script → paste the code →
draw your AOI as geometry on the map → click Run.
Then export EVI as GeoTIFF to Google Drive.
// EVI for any Area of Interest (AOI) using Sentinel-2 SR
// -------------------------------------------------------
// 1) Go to: https://code.earthengine.google.com
// 2) Click "New Script" and paste this code.
// 3) On the map: draw your AOI (Polygon/Rectangle).
// It will appear as a variable named 'geometry' in the left panel.
// 4) Click "Run" to display EVI.
// 5) In the Tasks tab, click "Run" to export EVI to Google Drive.
// -------------------------------------------------------
// 1. Define Area of Interest (AOI)
// -------------------------------------------------------
var roi = geometry; // Make sure a 'geometry' object exists in the left panel
// Center the map on the AOI
Map.centerObject(roi, 11);
// -------------------------------------------------------
// 2. Define time range
// -------------------------------------------------------
var startDate = '2023-01-01';
var endDate = '2023-12-31';
// -------------------------------------------------------
// 3. Load Sentinel-2 Surface Reflectance collection
// and keep only bands needed for EVI
// -------------------------------------------------------
var s2 = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.select(['B2', 'B4', 'B8']); // Blue, Red, NIR
// Create a median composite and clip to AOI
var image = s2.median().clip(roi);
// -------------------------------------------------------
// 4. Compute EVI
// EVI = G * (NIR - Red) / (NIR + C1*Red - C2*Blue + L)
// Using: G=2.5, L=1, C1=6, C2=7.5
// -------------------------------------------------------
var G = 2.5;
var C1 = 6.0;
var C2 = 7.5;
var L = 1.0;
var evi = image.expression(
'G * (NIR - RED) / (NIR + C1 * RED - C2 * BLUE + L)',
{
'G': G,
'C1': C1,
'C2': C2,
'L': L,
'NIR': image.select('B8'),
'RED': image.select('B4'),
'BLUE': image.select('B2')
}
).rename('EVI');
// -------------------------------------------------------
// 5. Visualization on the map
// -------------------------------------------------------
var eviVis = {
min: -1,
max: 1,
palette: [
'#440154', // low
'#3b528b',
'#21908c',
'#5dc963',
'#fde725' // high
]
};
// Add EVI layer to the map
Map.addLayer(evi, eviVis, 'EVI (Sentinel-2)', true);
// Optionally, also show a true color composite for context
var s2_rgb = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.select(['B4','B3','B2']) // RGB
.median()
.clip(roi);
Map.addLayer(s2_rgb, {min:0, max:3000}, 'True Color (RGB)', false);
// -------------------------------------------------------
// 6. Export EVI as GeoTIFF to Google Drive
// -------------------------------------------------------
Export.image.toDrive({
image: evi,
description: 'EVI_Export',
fileNamePrefix: 'EVI_Export',
region: roi,
scale: 10, // Sentinel-2 resolution
crs: 'EPSG:4326',
maxPixels: 1e13
});
// End of script